diff --git a/django/db/models/query_utils.py b/django/db/models/query_utils.py
index ae0f886107..9bbb3f87a1 100644
--- a/django/db/models/query_utils.py
+++ b/django/db/models/query_utils.py
@@ -85,13 +85,16 @@ class Q(tree.Node):
         if path.startswith('django.db.models.query_utils'):
             path = path.replace('django.db.models.query_utils', 'django.db.models')
         args, kwargs = (), {}
-        if len(self.children) == 1 and not isinstance(self.children[0], Q):
+        if len(self.children) == 1:
             child = self.children[0]
-            kwargs = {child[0]: child[1]}
+            if isinstance(child, tuple) and len(child) == 2:
+                kwargs = {child[0]: child[1]}
+            else:
+                args = (child,)
         else:
             args = tuple(self.children)
-            if self.connector != self.default:
-                kwargs = {'_connector': self.connector}
+        if self.connector != self.default:
+            kwargs = {'_connector': self.connector}
         if self.negated:
             kwargs['_negated'] = True
         return path, args, kwargs
